package com.api.shihua.action;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.api.shihua.cmd.RewardBaseService;
import com.api.shihua.entity.Reward;
import com.api.shihua.util.BaseUtil;
import com.api.shihua.util.LogTool;
import weaver.conn.RecordSet;
import weaver.formmode.setup.ModeRightInfo;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;

import java.text.SimpleDateFormat;
import java.util.*;

/*
二级 分解必定必定存在  以及分解的 requestid
获取申请人以及主流程以及变更部门获取变更数据信息  用来判断是否是删除新增以及修改
判断修改的金额是偶预总经理以及 一级分解部门金额相对应
数据插入


变更 总经理一级 二级分解   不会变更总经理分解（必须总经理，一级，二级 写入了建模才能变更 未写入不能变更）
一级分解  变更req_1 二级分解 变更req_2
不会变更总的金额 只会变更 金额的分配方式
情况1:个人分解  取消二级分解取消的数据，以及一级分解的所有的数据   新增以及分解数据
情况1:单位及分解  取消二级分解取消的数据，以及一级分解的所有的数据   新增以分解数据
情况1:大盘分解 取消二级分解取消的数据，以及一级分解的所有的数据   新增以及分解数据

    关于变更的注意事宜:
    划入分部大盘：划入部门大盘：都会影响实际的数据  我的想法是 先设置数据最后的节点在做 数据的更新  然后执行sql 语句
 */
public class ChangeRewardActionV2  extends ChangeBaseActionV1 {
    private final static LogTool log = new LogTool("/log/zjlbg/",false);

    public String execute(RequestInfo requestInfo) {
        SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentDate=sim.format(new Date()).split(" ")[0];
        String currentTime=sim.format(new Date()).split(" ")[1];

        String nd="";//currentDate.split("-")[0];//年度
        String yf="";//currentDate.split("-")[1];//月份
        Map<String,String> level1Map=new HashMap<String,String>();//保留一级分类的基础信息 比如备注 单位 金额等信息
        RecordSet re=new RecordSet();
        RecordSet re1=new RecordSet();
        String requestid=requestInfo.getRequestid();
        //Map<String,String> MainINfo=BaseUtil.getMainRequestbaseByreq(requestid);
        String leve1Req=requestid+"_1";//一级分解 请求ID
        String leve2Req=requestid+"_2";//二级分解  请求ID
        String workflowid=requestInfo.getWorkflowid();
        String formid= BaseUtil.getFormidId(workflowid);
        log.writeLog("ChangeRewardActionV2 "+requestid);
        Map<String,String> bmbz=new HashMap<String,String>();//记录部门备注
        Map<String,String> bmje=new HashMap<String,String>();//记录部门金额
        Map<String,String> hrbmdpjemap=new HashMap<String,String>();//记录划入部门大盘金额
        int lastopter= Util.getIntValue(requestInfo.getLastoperator(),0) ;//提交人员
        String lastopterLastname=new User(lastopter).getLastname();//提交人员姓名
        MainTableInfo mainTableInfo=requestInfo.getMainTableInfo();
        Property[] Property=mainTableInfo.getProperty();
        String Mainreq="";
        String sqr="";//申请人
        String bgdw="";//变更分部
        for(Property prop:Property){
            String name=prop.getName();
            String value=prop.getValue();
            if("yzjljllc".equalsIgnoreCase(name)){
                Mainreq=value;
            }
            if("bgfqr".equalsIgnoreCase(name)){
                sqr=value;
            }
            if("bgdw".equalsIgnoreCase(name)){
                bgdw=value;

            }
        }
        if("".equals(Util.null2String(bgdw).trim())||"".equals(Util.null2String(sqr).trim())){
            //requestInfo.getRequestManager().setMessageid("10001");
            //requestInfo.getRequestManager().setMessage("10001");//提醒信息id
            //requestInfo.getRequestManager().setMessagecontent("变更数据范围为空!");//提醒信息内容
            return "变更数据范围为空!";
        }
        log.writeLog("Mainreq "+Mainreq);
       // List<Map<String, Object>> baseUpd=BaseUtil.BaseUpdDate(Mainreq);//前置变更 数据记录需要前置更新
        //Map<String,Map<String,String>> MainMap=getMainDetailInfo(Mainreq);//主流程数据

        //Map<String,String> levelreq=BaseUtil.getReqMarkByMainreq(Mainreq);//获取一级分解的  requestid 一级 requestmark
        //log.writeLog("baseUpd--"+baseUpd.toString());
        //log.writeLog("levelreq--"+levelreq.toString());
        //log.writeLog("MainMap--"+MainMap.toString());

        //获取待变更数据
        String newSub=BaseUtil.getMax_1(sqr+"",bgdw);
        if(newSub.startsWith(",")){
            newSub=newSub.substring(1);
        }
        log.writeLog("Mainreq "+newSub);
        this.FBjsons=BaseUtil.getSubDataDetail(newSub,Mainreq+"");

        if(FBjsons==null||FBjsons.size()<=0){
            //requestInfo.getRequestManager().setMessageid("10001");
            //requestInfo.getRequestManager().setMessage("10001");//提醒信息id
            //requestInfo.getRequestManager().setMessagecontent("变更数据为空:可能存在申请人没有变更次单位的权限!");//提醒信息内容
            return "变更数据为空:可能存在申请人没有变更次单位的权限!";
        }
        this.DetailJson=FBjsons.getJSONObject("DetailJson");
        log.writeLog("jsons-subdata--"+FBjsons.toJSONString());
        log.writeLog("jsons-DetailJson--"+DetailJson.toJSONString());
        //获取数据   个人  单位 大盘
        //String sql="select a.bgfqr,a.sqrq,a.sqr,a.yjfjhrdpje,b.* from formtable_main_"+formid+" a,formtable_main_"+formid+"_dt2 b  where a.id=b.mainid and a.requestid='"+requestid+"'";
        String mess="";
        try{
            this.checkDate(requestid,null,formid,Mainreq);
        }catch(Exception e){
            mess="异常--->"+e.getMessage();
        }


        this.Enterylist.addAll(this.leve2Enterylist);
        log.writeLog(this.Enterylist.toString());
        log.writeLog(this.listMap.toString());
        if("".equals(mess)&&this.Enterylist.size()>0){
            RewardBaseService RewardBaseService=new RewardBaseService();
            mess=Util.null2String(RewardBaseService.getObjMapList(this.Enterylist,this.listMap)) ;
        }
        log.writeLog("mess"+mess);
        if(!"".equals(mess)){
            //requestInfo.getRequestManager().setMessageid("10001");
            //requestInfo.getRequestManager().setMessage("10001");//提醒信息id
            //requestInfo.getRequestManager().setMessagecontent("写入建模失败：请联系管理员"+mess);//提醒信息内容
            return "写入建模失败：请联系管理员"+mess;
        }else{
            try {
                //re1.execute("update formtable_main_" + formid + " set tsfyxr='0' where requestid='" + requestid + "'");
                log.writeLog("begin updModePimion");
                updModePimion(Mainreq, 46);
                log.writeLog("end updModePimion");
            }catch(Exception ee){
                log.writeLog("updException "+ ee.getMessage());
            }
        }
        return Action.SUCCESS;
    }
    /*
    更新建模权限
     */
    public void updModePimion(String wfrequestid,int modelid){
        RecordSet re=new RecordSet();
        re.execute("select * from uf_zjljlhzbb where mainrequestid='"+wfrequestid+"' ");
        while(re.next()){
            int dataid=re.getInt("id");
            ModeRightInfo mri=new ModeRightInfo();
            mri.editModeDataShare(1,modelid , dataid);
        }
    }
    /*
获取主流的部分数据  年度 月份 其中奖励单位金额总计 中层领导奖励金额合计
 */
    public Map<String,String> getMainData(String mainrequestid){
        Map<String,String> map=new HashMap<String,String>();
        RecordSet re=new RecordSet();
        String sql="select * from  uf_zjljlhzbb where wfrequestid='"+mainrequestid+"'";
        re.execute(sql);
        String nf="";
        String yf="";
        String qzjldwjezj="0";
        String zcldjljehj="0";
        String sqjlje="0";

        String jljefb="0";
        String bjldwfb="-1";
        String qzzcldjlje="0";
        String qzjldwje="0";
        String hrfbdpje="0";
        String Mainrequestid="";
        while(re.next()){
            nf=Util.null2String(re.getString("nf")).trim() ;
            yf=Util.null2String(re.getString("yf")).trim();
            Mainrequestid=Util.null2String(re.getString("Mainrequestid")).trim();
            qzjldwjezj=Util.getDoubleValue(re.getString("qzjldwjezj"),0)+"";
            zcldjljehj=Util.getDoubleValue(re.getString("zcldjljehj"),0)+"";
            sqjlje=Util.getDoubleValue(re.getString("sqjlje"),0)+"";
            jljefb=Util.getDoubleValue(re.getString("jljefb"),0)+"";//奖励金额分部
            bjldwfb=Util.getIntValue(re.getString("bjldwfb"),-1)+"";//奖励单位
            qzzcldjlje=Util.getDoubleValue(re.getString("qzzcldjlje"),0)+""; //中层领导奖励金额
            qzjldwje=Util.getDoubleValue(re.getString("qzjldwje"),0)+"";//其中单位奖励金额
            hrfbdpje=Util.getDoubleValue(re.getString("hrfbdpje"),0)+"";//分部大盘金额

        }
        map.put("nf",nf);
        map.put("yf",yf);
        map.put("Mainrequestid",Mainrequestid);
        map.put("qzjldwjezj",qzjldwjezj);
        map.put("zcldjljehj",zcldjljehj);
        map.put("sqjlje",sqjlje);

        map.put("jljefb",jljefb);
        map.put("bjldwfb",bjldwfb);
        map.put("qzzcldjlje",qzzcldjlje);
        map.put("qzjldwje",qzjldwje);
        map.put("hrfbdpje",hrfbdpje);
        return map;
    }
    /*
            获取  主流程的数据    因为不会变更
     */
    public Map<String,Map<String,String>> getMainDetailInfo(String mainrequestid){
        Map<String,Map<String,String>> MainList=new HashMap<String,Map<String,String>>();
        String sql="select distinct lsh,nf,yf,sqjlje,ndjhxm,ndjhys,ndjhsyed,qzjldwjezj,zcldjljehj,jlxmmc,bjldwfb,jljefb,jlfpbz from uf_zjljlhzbb where wfrequestid='"+mainrequestid+"' and isnull(sfyx,-1) in (0,-1)";
        RecordSet re=new RecordSet();
        Map<String,String> MAP=null;
        re.execute(sql);
        while(re.next()){
            String lsh=Util.null2String(re.getString("lsh")).trim();
            String nf=Util.null2String(re.getString("nf")).trim();
            String yf=Util.null2String(re.getString("yf")).trim();
            String sqjlje=Util.null2String(re.getString("sqjlje")).trim();
            String ndjhxm=Util.null2String(re.getString("ndjhxm")).trim();
            String ndjhys=Util.null2String(re.getString("ndjhys")).trim();
            String ndjhsyed=Util.null2String(re.getString("ndjhsyed")).trim();
            String qzjldwjezj=Util.null2String(re.getString("qzjldwjezj")).trim();
            String zcldjljehj=Util.null2String(re.getString("zcldjljehj")).trim();
            String bjldwfb=Util.null2String(re.getString("bjldwfb")).trim();
            String jljefb=Util.null2String(re.getString("jljefb")).trim();
            String jlfpbz=Util.null2String(re.getString("jlfpbz")).trim();
            String jlxmmc=Util.null2String(re.getString("jlxmmc")).trim();
            String hrfbdpje=Util.getDoubleValue(re.getString("hrfbdpje"),0)+"";//分部大盘金额

            String qzzcldjlje=Util.null2String(re.getString("qzzcldjlje")).trim();
            String qzjldwje=Util.null2String(re.getString("qzjldwje")).trim();
            MAP.put("lsh",lsh);
            MAP.put("nf",nf);
            MAP.put("yf",yf);
            MAP.put("sqjlje",sqjlje);
            MAP.put("ndjhxm",ndjhxm);
            MAP.put("ndjhys",ndjhys);
            MAP.put("ndjhsyed",ndjhsyed);
            MAP.put("qzjldwjezj",qzjldwjezj);
            MAP.put("zcldjljehj",zcldjljehj);
            MAP.put("bjldwfb",bjldwfb);
            MAP.put("jljefb",jljefb);
            MAP.put("jlfpbz",jlfpbz);
            MAP.put("jlxmmc",jlxmmc);
            MAP.put("qzzcldjlje",qzzcldjlje);
            MAP.put("qzjldwje",qzjldwje);
            MAP.put("hrfbdpje",hrfbdpje);
            MainList.put(bjldwfb,MAP);
        }
        return MainList;
    }

    @Override
    /*
    一级分解写入
     */
    public void setsqlData_level1(JSONObject json) throws Exception{
        //super.setsqlData_level1(json);
        if(json==null||json.size()<=0){
            return;
        }
        Reward reward=null;
        try {
            String bgrequestid= Util.null2String(json.getString("bgrequestid")).trim();
            String sffjzcjcshgr = Util.null2String(json.getString("sffjzcjcshgr")).trim();
            String hrfbdp = Util.null2String(json.getString("hrfbdp")).trim();
            String bjldw = Util.null2String(json.getString("bjldw")).trim();
            String bjlbm = Util.null2String(json.getString("bjlbm")).trim();
            String ry = Util.null2String(json.getString("ry")).trim();
            String bz = Util.null2String(json.getString("bz")).trim();
            String je = Util.null2String(json.getString("je")).trim();
            String modelid = Util.null2String(json.getString("modelid")).trim();
            //总经理分部数据
            JSONObject singleSub = this.FBjsons.getJSONObject(bjldw);//单个分部数据
            if (singleSub == null || singleSub.size() <= 0) {
                throw new Exception("单个分部数据为空不可写入");
            }
            JSONObject fristJson = new JSONObject();
            //Set<String> key = singleSub.keySet();
            JSONArray zjlfrist=singleSub.getJSONArray("0");//总经理 级别的第一行
            //for (String haha : key) {
            fristJson = zjlfrist.getJSONObject(0);
            //}
            if(fristJson==null||fristJson.size()<=0){
                throw new Exception("fristJson单个分部数据为空不可写入");
            }
            log.writeLog(sffjzcjcshgr+"newfristJson--"+fristJson.toJSONString());
            //开始写入数据
            if("0".equals(sffjzcjcshgr)){//单位分解
                reward=new Reward();
                double qzjldwjezj=Util.getDoubleValue(fristJson.getString("qzjldwjezj"),0);
                double zcldjljehj=Util.getDoubleValue(fristJson.getString("zcldjljehj"),0);
                //String Mainrequestid=Util.null2String(FBMAP.get("Mainrequestid")).trim();
                String jlfpbz=Util.null2String(fristJson.getString("jlfpbz")).trim();
                double  sqjlje=Util.getDoubleValue(fristJson.getString("sqjlje"),0);;//申请奖励金额

                double jljefb=Util.getDoubleValue(fristJson.getString("jljefb"),0);;//奖励金额（分部）
                double qzzcldjlje=Util.getDoubleValue(fristJson.getString("qzzcldjlje"),0);//其中中层领导奖励金额
                double qzjldwje=Util.getDoubleValue(fristJson.getString("qzjldwje"),0);//其中奖励单位金额

                String ndjhxm=Util.null2String(fristJson.getString("ndjhxm")).trim();//年度计划-项目
                double ndjhys=Util.getDoubleValue(fristJson.getString("ndjhys"),0);;//年度计划-预算
                double ndjhsyed=Util.getDoubleValue(fristJson.getString("ndjhsyed"),0);;//年度计划-剩余额度
                String jlxmmc=Util.null2String(fristJson.getString("jlxmmc")).trim();;//奖励项目名称
                log.writeLog("0leve1--set");
                reward.setJb(1);
                reward.setMainrequestid(fristJson.getString("mainrequestid"));
                reward.setFjlx(Util.getIntValue("0",-1));
                reward.setNf(fristJson.getString("nf"));
                reward.setYf(fristJson.getString("yf"));
                String leve1Req=bgrequestid+"_"+System.currentTimeMillis()+"";
                setBmreq(bjlbm,leve1Req);
                reward.setLsh(leve1Req);
                reward.setSqrq(currentDate);
                reward.setSqdw(Util.getIntValue(bjldw,-1));
                reward.setSqr(Util.getIntValue(fristJson.getString("sqr"),-1));
                reward.setNdjhxm(ndjhxm);
                reward.setNdjhys(ndjhys);
                reward.setNdjhsyed(ndjhsyed);
                reward.setSqjlje(sqjlje);
                reward.setJlxmmc(jlxmmc);
                //reward.setHrfbdpje(hrbmdpje_dt3);//                    稍后确认
                reward.setJljefb(jljefb);
                reward.setQzzcldjlje(qzzcldjlje);
                reward.setQzjldwje(qzjldwje);
                reward.setBjldwfb(Util.getIntValue(bjldw,-1));
                reward.setQzjldwjezj(qzjldwjezj);
                reward.setZcldjljehj(zcldjljehj);

                reward.setJldwbm(Util.getIntValue(bjlbm,-1));
                reward.setDwjljebm(Util.getDoubleValue(je,0));
                reward.setDwjlbz(bz);
                reward.setJlfpbz(jlfpbz);

                reward.setWfrequestid(leve1Req);
                reward.setTragwfreq(fristJson.getString("wfrequestid"));
                reward.setWfrequestmark(leve1Req);
                reward.setModedatacreatertype("0");
                reward.setModedatacreater("1");
                reward.setModedatacreatedate(currentDate);
                reward.setModedatacreatetime(currentTime);
                this.Enterylist.add(reward);
            }
            if("1".equals(sffjzcjcshgr)){//个人分解  直接分摊  分部的金额

                reward=new Reward();
                //bmbz.put(jldw_dt3+"",bz_dt3);//奖励单位部门备注  用于二级级分解  备注
                //bmje.put(jldw_dt3+"",jljey_dt3+"");//奖励单位部门金额  用于二级级分解  金额
                double qzjldwjezj=Util.getDoubleValue(fristJson.getString("qzjldwjezj"),0);
                double zcldjljehj=Util.getDoubleValue(fristJson.getString("zcldjljehj"),0);
                //String Mainrequestid=Util.null2String(FBMAP.get("Mainrequestid")).trim();
                String jlfpbz=Util.null2String(fristJson.getString("jlfpbz")).trim();
                double  sqjlje=Util.getDoubleValue(fristJson.getString("sqjlje"),0);;//申请奖励金额

                double jljefb=Util.getDoubleValue(fristJson.getString("jljefb"),0);;//奖励金额（分部）
                double qzzcldjlje=Util.getDoubleValue(fristJson.getString("qzzcldjlje"),0);//其中中层领导奖励金额
                double qzjldwje=Util.getDoubleValue(fristJson.getString("qzjldwje"),0);//其中奖励单位金额

                String ndjhxm=Util.null2String(fristJson.getString("ndjhxm")).trim();//年度计划-项目
                double ndjhys=Util.getDoubleValue(fristJson.getString("ndjhys"),0);;//年度计划-预算
                double ndjhsyed=Util.getDoubleValue(fristJson.getString("ndjhsyed"),0);;//年度计划-剩余额度
                String jlxmmc=Util.null2String(fristJson.get("jlxmmc")).trim();;//奖励项目名称


                reward.setJb(1);
                reward.setMainrequestid(fristJson.getString("mainrequestid"));
                reward.setFjlx(Util.getIntValue("1",-1));//个人分解
                reward.setNf(fristJson.getString("nf"));
                reward.setYf(fristJson.getString("yf"));
                String leve1Req=bgrequestid+"_"+System.currentTimeMillis()+"";
                //setBmreq(bjlbm,leve1Req);
                reward.setLsh(leve1Req);
                reward.setSqrq(currentDate);
                reward.setSqdw(Util.getIntValue(bjldw,-1));
                reward.setSqr(Util.getIntValue(fristJson.getString("sqr"),-1));
                reward.setNdjhxm(ndjhxm);
                reward.setNdjhys(ndjhys);
                reward.setNdjhsyed(ndjhsyed);
                reward.setSqjlje(sqjlje);
                reward.setJlxmmc(jlxmmc);
                //reward.setHrfbdpje(hrbmdpje_dt3);//                       稍后确认
                reward.setJljefb(jljefb);
                reward.setQzzcldjlje(qzzcldjlje);
                reward.setQzjldwje(qzjldwje);
                reward.setBjldwfb(Util.getIntValue(bjldw,-1));
                reward.setQzjldwjezj(qzjldwjezj);
                reward.setZcldjljehj(zcldjljehj);

                reward.setJldwbm(Util.getIntValue(bjlbm,-1));
                reward.setXm(Util.getIntValue(ry,-1));
                reward.setGrjlje(Util.getDoubleValue(je,0));
                reward.setGrjlbz(bz);
                reward.setJlfpbz(jlfpbz);

                reward.setWfrequestid(leve1Req);
                reward.setTragwfreq(fristJson.getString("wfrequestid"));
                reward.setWfrequestmark(leve1Req);
                reward.setModedatacreatertype("0");
                reward.setModedatacreater("1");
                reward.setModedatacreatedate(currentDate);
                reward.setModedatacreatetime(currentTime);
                this.Enterylist.add(reward);
            }
            if("2".equals(sffjzcjcshgr)){//大盘分解

                reward=new Reward();
                double qzjldwjezj=Util.getDoubleValue(fristJson.getString("qzjldwjezj"),0);
                double zcldjljehj=Util.getDoubleValue(fristJson.getString("zcldjljehj"),0);
                //String Mainrequestid=Util.null2String(FBMAP.get("Mainrequestid")).trim();
                String jlfpbz=Util.null2String(fristJson.getString("jlfpbz")).trim();
                double  sqjlje=Util.getDoubleValue(fristJson.getString("sqjlje"),0);;//申请奖励金额

                double jljefb=Util.getDoubleValue(fristJson.getString("jljefb"),0);;//奖励金额（分部）
                double qzzcldjlje=Util.getDoubleValue(fristJson.getString("qzzcldjlje"),0);//其中中层领导奖励金额
                double qzjldwje=Util.getDoubleValue(fristJson.getString("qzjldwje"),0);//其中奖励单位金额

                String ndjhxm=Util.null2String(fristJson.getString("ndjhxm")).trim();//年度计划-项目
                double ndjhys=Util.getDoubleValue(fristJson.getString("ndjhys"),0);;//年度计划-预算
                double ndjhsyed=Util.getDoubleValue(fristJson.getString("ndjhsyed"),0);;//年度计划-剩余额度
                String jlxmmc=Util.null2String(fristJson.getString("jlxmmc")).trim();;//奖励项目名称

                reward.setJb(1);
                reward.setMainrequestid(fristJson.getString("mainrequestid"));
                reward.setFjlx(Util.getIntValue("2",-1));
                reward.setNf(fristJson.getString("nf"));
                reward.setYf(fristJson.getString("yf"));
                String leve1Req=bgrequestid+"_"+System.currentTimeMillis()+"";
                //setBmreq(bjlbm,leve1Req);
                reward.setLsh(leve1Req);
                reward.setSqrq(currentDate);
                reward.setSqdw(Util.getIntValue(bjldw,-1));
                reward.setSqr(Util.getIntValue(fristJson.getString("sqr"),-1));

                reward.setNdjhxm(ndjhxm);
                reward.setNdjhys(ndjhys);
                reward.setNdjhsyed(ndjhsyed);
                reward.setSqjlje(sqjlje);
                reward.setJlxmmc(jlxmmc);
                reward.setHrfbdpje(Util.getDoubleValue(je,0));//     待确认
                reward.setJljefb(jljefb);
                reward.setQzzcldjlje(qzzcldjlje);
                reward.setQzjldwje(qzjldwje);
                reward.setBjldwfb(Util.getIntValue(bjldw,-1));
                reward.setQzjldwjezj(qzjldwjezj);
                reward.setZcldjljehj(zcldjljehj);

                reward.setWfrequestid(leve1Req);
                reward.setTragwfreq(fristJson.getString("wfrequestid"));
                reward.setWfrequestmark(leve1Req);
                reward.setModedatacreatertype("0");
                reward.setModedatacreater("1");
                reward.setModedatacreatedate(currentDate);
                reward.setModedatacreatetime(currentTime);
                this.Enterylist.add(reward);
            }

        }catch(Exception e){
            throw new Exception("setsqlData_level1--->"+e.getMessage());
        }
    }

    @Override
    /*
    二级分解写入
    这里需要 注意的是 需要部门的 金额 ，部门的备注  以及 部门分解的 requestid
     */
    public void setsqlData_level2(JSONObject json) throws Exception{
        //super.setsqlData_level2(json);
        if(json==null||json.size()<=0){
            return;
        }
        Reward reward=null;
        try {
            String bgrequestid=Util.null2String(json.getString("bgrequestid"));
            String bjldw=Util.null2String(json.getString("bjldw"));
            String bjlbm=Util.null2String(json.getString("bjlbm"));
            String ry=Util.null2String(json.getString("ry"));
            String je=Util.null2String(json.getString("je"));
            String hrbmdp=Util.null2String(json.getString("hrbmdp"));
            String bz=Util.null2String(json.getString("bz"));
            String modelid=Util.null2String(json.getString("modelid"));
            JSONObject fristJson=this.bmlevel_1json.getJSONObject(bjlbm);//getBmFristJSON(bjlbm);
            //通过单位一级部门 获取部门数据
            if(fristJson==null||fristJson.size()<=0){
                throw new Exception("fristJson二级分解单个部门数据为空不可写入");
            }

            String dwjlbz = this.bmbz.getString(bjlbm);//部门备注
            double dwjljebm = Util.getDoubleValue(this.bmje.getString(bjlbm), 0);//部门奖励金额
            //double hrdpjebm = Util.getDoubleValue(hrbmdpjemap.get(jldw_detail5), 0);//划入部门大盘金额
            double qzjldwjezj = Util.getDoubleValue(fristJson.getString("qzjldwjezj"), 0);
            double zcldjljehj = Util.getDoubleValue(fristJson.getString("zcldjljehj"), 0);
            //String Mainrequestid=Util.null2String(FBMAP.get("Mainrequestid")).trim();
            String jlfpbz = Util.null2String(fristJson.getString("jlfpbz")).trim();
            double sqjlje = Util.getDoubleValue(fristJson.getString("sqjlje"), 0);
            ;//申请奖励金额

            double jljefb = Util.getDoubleValue(fristJson.getString("jljefb"), 0);
            ;//奖励金额（分部）
            double qzzcldjlje = Util.getDoubleValue(fristJson.getString("qzzcldjlje"), 0);//其中中层领导奖励金额
            double qzjldwje = Util.getDoubleValue(fristJson.getString("qzjldwje"), 0);//其中奖励单位金额

            String ndjhxm = Util.null2String(fristJson.getString("ndjhxm")).trim();//年度计划-项目
            double ndjhys = Util.getDoubleValue(fristJson.getString("ndjhys"), 0);
            ;//年度计划-预算
            double ndjhsyed = Util.getDoubleValue(fristJson.getString("ndjhsyed"), 0);
            ;//年度计划-剩余额度
            String jlxmmc = Util.null2String(fristJson.getString("jlxmmc")).trim();
            ;//奖励项目名称
            double hrfbdpje =  Util.getDoubleValue(this.fbdpje_json.getString(bjldw), 0);//划入分部大盘金额

            reward=new Reward();
            reward.setJb(2);
            reward.setFjlx(3);
            reward.setNf(fristJson.getString("nf"));
            reward.setMainrequestid(fristJson.getString("mainrequestid"));
            reward.setYf(fristJson.getString("yf"));
            String leve2Req=bgrequestid+"_"+System.currentTimeMillis()+"";
            reward.setLsh(leve2Req);
            reward.setSqrq(currentDate);
            reward.setSqr(Util.getIntValue(fristJson.getString("sqr"),-1));

            reward.setSqdw(Util.getIntValue(bjldw,-1));
            reward.setNdjhxm(ndjhxm);
            reward.setNdjhys(ndjhys);
            reward.setNdjhsyed(ndjhsyed);
            reward.setSqjlje(sqjlje);
            reward.setJlxmmc(jlxmmc);
            reward.setHrfbdpje(hrfbdpje);
            reward.setJljefb(jljefb);
            reward.setQzzcldjlje(qzzcldjlje);
            reward.setQzjldwje(qzjldwje);
            reward.setQzjldwjezj(qzjldwjezj);
            reward.setZcldjljehj(zcldjljehj);
            reward.setBjldwfb(Util.getIntValue(bjldw,-1));

            reward.setJldwbm(Util.getIntValue(bjlbm,-1));
            reward.setDwjljebm(dwjljebm);
            //reward.setHrdpjebm(hrdpjebm);//  待确认 等下更新

            reward.setXm(Util.getIntValue(ry,-1));
            reward.setGrjlje(Util.getDoubleValue(je, 0));
            reward.setGrjlbz(bz);
            reward.setJlfpbz(jlfpbz);
            reward.setDwjlbz(dwjlbz);
            //reward.setZcldfpbz(zcldfpbz);
            String bmReq=this.bmreq.getString(bjlbm);
            reward.setWfrequestid(leve2Req);
            reward.setTragwfreq(bmReq);
            reward.setWfrequestmark(leve2Req);
            reward.setModedatacreatertype("0");
            reward.setModedatacreater("1");
            reward.setModedatacreatedate(currentDate);
            reward.setModedatacreatetime(currentTime);
            this.leve2Enterylist.add(reward);
        }catch(Exception e){
            throw  new Exception ("setsqlData_level2"+e.getMessage());
        }

    }
}
